package com.sunwayhorizo.health.business.clinic.emr.document.query;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.hl7.common.Hl7Exception;
import com.sunwayhorizo.health.hl7.persistent.RimCoreEds;
import com.sunwayhorizo.health.hl7.rim.Observation;

@Local
public interface DocumentQueryLocal
{

    /**
     * 根据文书分类RIM 角色ID查询动作ID
     * @param emrClassRoleId 文书类型的RIM角色ID
     * @return List<Object> 
     * @throws Hl7Exception
     */
    public List<Object> findActIdByTempClassRoleId(String emrClassRoleId) throws Hl7Exception;
    
    /**
     * 根据文书类型监控代码，患者id查询该文书类型下的所有已写病历。
     * 当文书类型为空时，查询出该患者所有已写的病历
     * @param patientID 患者id
     * @param classCode 文书类型监控代码
     * @return List
     * @throws Hl7Exception
     */
    @SuppressWarnings("rawtypes")
    public List findEmrByPatientID(String patientID,String classCode,String patientNum) throws Hl7Exception;
    
    /**
     * 根据患者RIM 角色id拿到患者的主诉，现病史，既往史，个人史等信息
     * @param patientId 患者RIM 角色id
     * @param patientNum 患者住院次数
     * @return List<RimCoreEds>
     * @throws Hl7Exception
     */
    public List<RimCoreEds> findInPatientMacroInfoByPatientId(String patientId,String patientNum) throws Hl7Exception;
    
    /**
     * 查询患者的诊断信息
     * @param patientId 患者id
     * @param patientNum 患者住院次数
     * @return List<Observation>
     * @throws Hl7Exception
     */
    public List<Observation> findDiagnosisByPatientId(String patientId,String patientNum) throws Hl7Exception;
    
    /**
     * 查询患者一共书写了多少个病历文件(只拿已书写的动作id)
     * @param patienId 患者id
     * @param patientNum 患者住院次数
     * @return
     * @throws Hl7Exception
     */
    public List<Long> findAlreadyWriteDocByPatientId(String patienId,String patientNum) throws Hl7Exception;
    
    /**
     * 查询患者一共签名了多少个文件(只拿已签名的动作id)
     * @param patienId 患者id
     * @param patientNum 患者住院次数
     * @return List<Long> 
     * @throws Hl7Exception
     */
    public List<Long> findAlreadySignatureDocByPatientId(String patienId,String patientNum) throws Hl7Exception;
    
    /**
     * 拿到患者首次病程的动作id
     * @param patientId 患者RIM 角色id
     * @param patientNum 患者住院次数
     * @return List
     * @throws Hl7Exception
     */
    @SuppressWarnings("rawtypes")
    public List findFirstMedicalActIdByPatientId(String patientId,String patientNum) throws Hl7Exception;
    
}
